# ===== 6-4.1 =====
class Province:
    # ===== 6-4.2 =====
    """表示省份。
    属性:
        country: 国家名称
        name: 省份名称
        population: 人口数量
    """

    # 类属性，所有中国省份均属于中国
    country = "中国"

    def __init__(self, name, population):
        # 实例属性，每个省份的省名
        self.name = name
        # 实例属性，每个省份的人口
        self.population = population
        print(self.name, self.population)

    def get_desc(self):
        return f"{self.name}的人口为{self.population}"

    # ===== 6-4.5 : part 1 =====
    def update_pop(self, new_pop):
        if new_pop > 0:  # 添加验证逻辑
            self.population = new_pop


# ===== 6-4.3 =====
# 类名后跟括号，就像调用函数一样
beijing = Province("北京", 2186)
shanghai = Province("上海", 2487)

# ===== 6-4.4 =====
# 访问类属性
print(beijing.country)

# 访问实例属性
print(beijing.name)
print(beijing.population)

# 调用方法
print(beijing.get_desc())

# ===== 6-4.5 : part 2 =====
# 1. 直接赋值
beijing.population = 2189

# 2. 通过方法修改
beijing.update_pop(2189)


# ===== 6-4.6 =====
def newborn_increase(province):
    print("从前" + province.get_desc())
    province.population += 100
    print("现在" + province.get_desc())


newborn_increase(beijing)
